package co.edu.ucatolica.sislab.persistence.utils;

/**
 * Enumeracion correspondiente a los tipos de base de dato disponibles
 */
public enum DatabaseTypes {
	/**
	 * Base de datos de acceso a datos estaticos
	 */
	SISLABDB( "Sislab Database",
		"SISLABDB.properties",
		"java:/MySqlDS",
		"sqlsDatabaseDB.properties"
	);
	
	/**
	 * Nombre de la bd
	 */
	private String name;
	
	/**
	 * Nombre del archivo de conexion
	 */
	private String connectionFile;
	
	/**
	 * Nombre del datasource
	 */
	private String datasource;
	
	/**
	 * Nombre del archivo que contiene los sqls
	 */
	private String sqlsFile;
	
	/**
	 * Construye la enumeracion de tipos de base de datos
	 * @param name Nombre
	 * @param connectionFile Archivo que contiene los datos de conexion
	 * @param datasource Nombre del datasource asociado
	 * @param sqlsFile Archivo que contiene los sqls
	 */
	DatabaseTypes( String name, String connectionFile, String datasource, String sqlsFile ){
		this.name = name;
		this.datasource = datasource;
		this.connectionFile = connectionFile;
		this.sqlsFile = sqlsFile;
	}

	/**
	 * Retorna el nombre del tipo de base de datos
	 * @return Nombre del tipo de base de datos
	 */
	public String getName() {
		return name;
	}

	/**
	 * Cambia el nombre del tipo de base de datos
	 * @param name Nuevo nombre del tipo de base de datos
	 */
	public void setName(String name) {
		this.name = name;
	}

	/**
	 * Retorna el archivo de datos de conexion a la base de datos
	 * @return Archivo de datos de conexion a la base de datos
	 */
	public String getConnectionFile() {
		return connectionFile;
	}

	/**
	 * Cambia el archivo de datos de conexion a la base de datos
	 * @param connectionFile Nuevo archivo de datos de conexion a la base de datos
	 */
	public void setConnectionFile(String connectionFile) {
		this.connectionFile = connectionFile;
	}

	/**
	 * Retorna el datasource asociado a la base de datos
	 * @return Datasource asociado a la base de datos
	 */
	public String getDatasource() {
		return datasource;
	}

	/**
	 * Cambia el datasource asociado a la base de datos
	 * @param datasource Nuevo datasource asociado a la base de datos
	 */
	public void setDatasource(String datasource) {
		this.datasource = datasource;
	}

	/**
	 * Retorna el archivo que contiene los sqls para la base de datos
	 * @return Archivo que contiene los sqls para la base de datos
	 */
	public String getSqlsFile() {
		return sqlsFile;
	}

	/**
	 * Cambia el archivo que contiene los sqls para la base de datos
	 * @param sqlsFile Nuevo archivo que contiene los sqls para la base de datos
	 */
	public void setSqlsFile(String sqlsFile) {
		this.sqlsFile = sqlsFile;
	}
	
}
